package com.hakgc.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;

/**
 * 自定义的Servlet：继承HttpServlet
 *
 * JavaEE6版本开始可以直接使用注解配置
 * @WebServlet
 *      value/urlPatterns: 配置Servlet请求路径（全局唯一），多个路径可以映射到同一个Servlet
 *
 * @author Xing.Jiejian
 * @date 2020/11/7
 */
@WebServlet(name = "MyServlet",value = "/myServlet",
    // 注解方式配置初始化参数
    initParams = {@WebInitParam(name = "init",value = "xxx"),
                @WebInitParam(name = "encoding",value = "utf-8")})
public class MyServlet extends HttpServlet {
    int j = 0;

    /**
     * 用来处理post请求
     * @param request 基于Http协议的请求对象
     * @param response 给予Http协议的响应对象
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println("post：username-"+username);
        // 获取ServletConfig对象，从而得到初始化的参数
        String encoding = getServletConfig().getInitParameter("encoding");
        response.setContentType("text/html;charset="+encoding);
        //直接响应文本信息给用户
        PrintWriter out = response.getWriter();
        out.println("POST响应用户");

        int i = 0;
    }

    /**
     * 用来处理Get请求
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 接收用户提交的请求数据
        // 如果参数名不存在，则返回null
        String username = request.getParameter("username");
        // 如果同名参数提交了很多个值，需要获取所有的值，使用
        String[] strIds = request.getParameterValues("id");

        System.out.println("get请求：username-"+username);
        System.out.println("ids:"+ Arrays.toString(strIds));

        // 给予用户响应
        // 设置响应文件的编码格式
        //response.setCharacterEncoding("utf-8");
//        response.setContentType("text/html;charset=utf-8");
        // 1.直接响应文本信息给用户
        // 获取响应对象的字符输出流
//        PrintWriter out = response.getWriter();
//        out.println("响应用户");
        // 2.可以根据请求处理的结果跳转到不同的页面
        // 2-1:转发(1)显示内容为新页面index.html，但是浏览器的路径还停留在myServlet；
        //         2)在浏览器监控中只能看到一次对Servlet的请求)
        //request.getRequestDispatcher("index.html").forward(request,response);
        // 2-2:重定向
        //  1) 页面显示内容为index.html,浏览器的路径也是index.html
        //  2) 客户端(浏览器)发起了两次请求，第一次请求Servlet,得到302(重定向)的响应，
        //     第二次再请求index.html，得到200响应
        response.sendRedirect("index.html");

    }


}
